package com.sanyou.controller;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.sanyou.pojo.vo.ProductCountVo;
import com.sanyou.pojo.vo.ProductVo;
import com.sanyou.service.IndustryDataService;
import com.sanyou.service.ProductService;
import com.sanyou.utils.JSONResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;

@Api(value = "管理员主页面相关的接口",tags = {"管理员主页面相关的Controller"})
@CrossOrigin
@RestController
@RequestMapping("/admin")
public class AdminController {

    @Resource
    private IndustryDataService industryDataService;

    @Autowired
    private ProductService productService;

    /**
     * 管理员页面获取阴极铜产量
     * 请求demo:http://localhost:8081/admin/copperProduction?userId=22092271S5GFY2RP
     * @param userId
     * @return
     */
    @ApiOperation(value = "阴极铜产量", notes = "阴极铜产量")
    @GetMapping("/copperProduction")
    public JSONResult getCopperProduction(String userId) {
        if (StrUtil.isEmpty(userId))
            return JSONResult.errorMsg("用户ID不能为空！");

        return JSONResult.ok(industryDataService.getCopperProduction(userId));
    }
    /**
     * 管理员页面获取阴极铜表面缺陷数据
     * 请求demo:http://localhost:8081/admin/copperDefect?userId=22092271S5GFY2RP
     * @param userId
     * @return
     */
    @ApiOperation(value = "阴极铜表面缺陷数据", notes = "阴极铜表面缺陷数据")
    @GetMapping("/copperDefect")
    public JSONResult getCopperDefect(String userId){
        if (StrUtil.isEmpty(userId))
            return JSONResult.errorMsg("用户ID不能为空！");

        return JSONResult.ok(industryDataService.getCopperDefect(userId));
    }
    /**
     * 管理员页面获取机组剥片速度
     * 请求demo:http://localhost:8081/admin/strippingSpeed?userId=22092271S5GFY2RP
     * @param userId
     * @return
     */
    @ApiOperation(value = "机组剥片速度", notes = "机组剥片速度")
    @GetMapping("/strippingSpeed")
    public JSONResult getStrippingSpeed(String userId){
        if (StrUtil.isEmpty(userId))
            return JSONResult.errorMsg("用户ID不能为空！");

        return JSONResult.ok(industryDataService.getStrippingSpeedForAdmin(userId));
    }

    /**
     * 根据用户ID获取用户拥有查看权限的所有工厂(公司)关于其各种状态的阴极板数量统计信息
     * @param userId
     * * 请求demo:http://localhost:8081/admin/getAllProductCounts?userId=22092271S5GFY2RP
     * @return
     */
    @GetMapping("/getAllProductCounts")
    public JSONResult getAllProductCounts(String userId){
        if(StringUtils.isBlank(userId))
            return JSONResult.errorMsg("用户Id为空!");

        //根据用户id获取获取用户拥有查看权限的所有工厂(公司)关于其各种状态的阴极板数量统计信息
        List<ProductCountVo> list = productService.getProductCountByUserId(userId);

        //数据转换
        ArrayList<JSONObject> jsonObjects = new ArrayList<>();
        for (ProductCountVo count : list) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("factoryName", count.getFactoryName());//车间名
            jsonObject.put("sum", count.getSum());//总板数
            jsonObject.put("online", count.getOnline());//在线板数
            jsonObject.put("maintain", count.getMaintain());//维修板数
            jsonObject.put("offline", count.getOffline());//备用板数
            jsonObject.put("scrap", count.getScrap());//报废板数
            jsonObject.put("uncodeNum", count.getUncode());//无编码阴极板数量
            jsonObject.put("newAdd", count.getNewAdd());//新增阴极板数量

            jsonObjects.add(jsonObject);
        }

        return JSONResult.ok(jsonObjects);
    }

}
